/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.acworks.acroute;

import java.util.List;
import java.util.Set;

/**
 * a datacenter floor plan - collection of spaces with their own coordinates, comprising a data center.
 *
 * @author nikita
 */
public interface Datacenter {

    int getOwnedRoomsCount();

    Set<Space> getOwnedRooms();

    Space getStartingSpace();

    /**
     *
     * @param x
     * @param y
     * @return Space residing at [x,y]
     * @throws RuntimeException if x/y are invalid
     */
    Space getSpaceAt(int x, int y);

    /**
     * 
     * @param space
     * @return list of spaces adjacent to given space. List is ordered in clockwise pattern, starting at 12 o'clock
     * @throws RuntimeException if given space isn't part of this DS
     */
    List<Space> getSpacesAdjacentTo(Space space);

    int getWidth();

    int getHeight();
}
